【Pyqt5图形界面】第二篇:界面布局和逻辑分离的写法

您所在的位置:网站首页 from pyqt5 import qtcore 【Pyqt5图形界面】第二篇:界面布局和逻辑分离的写法

【Pyqt5图形界面】第二篇:界面布局和逻辑分离的写法

2023-03-20 22:29| 来源: 网络整理| 查看: 265

文章目录 前言一、ui界面二、界面和逻辑分离1.通过designer工具生成.ui文件2.通过pyuic将.ui文件转成py文件3.创建main.py文件,实现逻辑分离

前言

Python语言的能力我们都知道,在有桌面需求时,也有很多选择,我比较常用的就是Pyqt5,但是相对来说Pyqt5的资料不是很多,使用的过程中有许多东西需要我们考虑。包括ui界面、css样式、算法和逻辑等。

一、ui界面

pyqt5的界面主要有2中方式:一是通过designer工具可视化布局在生成py文件,二是通过代码逻辑。直接代码逻辑完成布局难度很大,对于刚接触pyqt5的开发人员来说,第一种方式比较适合,但是在遇到界面比较复杂,需要修改时,我们就需要注意生成的py布局文件和原有逻辑如何共存这个问题。 本博客手机通过pycharm来开发pyqt5的,相关配置请参考:PyCharm安装PyQt5及其工具(Qt Designer、PyUIC、PyRcc)详细教程

二、界面和逻辑分离 1.通过designer工具生成.ui文件

在这里插入图片描述

2.通过pyuic将.ui文件转成py文件

以下内容是 通过上图将生成如下内容的login.py文件

# -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'login.ui' # # Created by: PyQt5 UI code generator 5.15.4 # # WARNING: Any manual changes made to this file will be lost when pyuic5 is # run again. Do not edit this file unless you know what you are doing. from PyQt5 import QtCore, QtGui, QtWidgets class Ui_LoginMainWindow(object): def setupUi(self, LoginMainWindow): LoginMainWindow.setObjectName("LoginMainWindow") LoginMainWindow.setEnabled(True) LoginMainWindow.resize(366, 230) font = QtGui.QFont() font.setFamily("黑体") font.setPointSize(12) font.setStrikeOut(False) LoginMainWindow.setFont(font) self.centralwidget = QtWidgets.QWidget(LoginMainWindow) self.centralwidget.setObjectName("centralwidget") self.label = QtWidgets.QLabel(self.centralwidget) self.label.setGeometry(QtCore.QRect(90, 80, 36, 16)) self.label.setStyleSheet("font: 12pt \"Agency FB\";") self.label.setObjectName("label") self.label_2 = QtWidgets.QLabel(self.centralwidget) self.label_2.setGeometry(QtCore.QRect(90, 118, 36, 16)) self.label_2.setStyleSheet("font: 12pt \"Agency FB\";") self.label_2.setObjectName("label_2") self.name = QtWidgets.QLineEdit(self.centralwidget) self.name.setEnabled(True) self.name.setGeometry(QtCore.QRect(140, 78, 130, 25)) self.name.setObjectName("name") self.password = QtWidgets.QLineEdit(self.centralwidget) self.password.setGeometry(QtCore.QRect(140, 115, 130, 25)) font = QtGui.QFont() font.setFamily("黑体") font.setPointSize(12) font.setStrikeOut(False) font.setKerning(True) font.setStyleStrategy(QtGui.QFont.PreferAntialias) self.password.setFont(font) self.password.setObjectName("password") self.label_3 = QtWidgets.QLabel(self.centralwidget) self.label_3.setGeometry(QtCore.QRect(160, 20, 51, 27)) self.label_3.setStyleSheet("font: 20pt \"隶书\";") self.label_3.setObjectName("label_3") self.loginbutton = QtWidgets.QPushButton(self.centralwidget) self.loginbutton.setGeometry(QtCore.QRect(90, 170, 180, 30)) self.loginbutton.setStyleSheet("font: 12pt \"Agency FB\";\n" "background-color: rgb(0, 170, 255);") self.loginbutton.setObjectName("loginbutton") self.message = QtWidgets.QLabel(self.centralwidget) self.message.setGeometry(QtCore.QRect(90, 150, 181, 20)) self.message.setText("") self.message.setObjectName("message") LoginMainWindow.setCentralWidget(self.centralwidget) self.retranslateUi(LoginMainWindow) self.loginbutton.clicked.connect(LoginMainWindow.click_login_btn) QtCore.QMetaObject.connectSlotsByName(LoginMainWindow) def retranslateUi(self, LoginMainWindow): _translate = QtCore.QCoreApplication.translate LoginMainWindow.setWindowTitle(_translate("LoginMainWindow", "登录界面")) self.label.setText(_translate("LoginMainWindow", "账号")) self.label_2.setText(_translate("LoginMainWindow", "密码")) self.label_3.setText(_translate("LoginMainWindow", "EVT")) self.loginbutton.setText(_translate("LoginMainWindow", "安全登录")) 3.创建main.py文件,实现逻辑分离

代码如下(示例):

import sys from PyQt5 import QtWidgets from main import MainWindow from login import Ui_LoginMainWindow from config import * class Login(QtWidgets.QMainWindow, Ui_LoginMainWindow): def __init__(self): super(Login, self).__init__() self.setupUi(self) def click_login_btn(self): """实现login函数,textEdit是我们放上去的文本框的id""" name = self.name.text() password = self.password.text() try: if name == 'ty' and password == '123456': print('登陆成功') self.message.setText('登陆成功') self.close() # 开启主窗口 self.main_window = MainWindow() self.main_window.show() else: self.message.setText('账号密码错误') except Exception as e: print(e) self.message.setText("其他错误") if __name__ == '__main__': app = QtWidgets.QApplication(sys.argv) login = Login() login.show() # main_window = MainWindow() # main_window.show() sys.exit(app.exec_())


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3